{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "3a8b923f-6714-4681-a109-9402465a4147",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import math\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "plt.style.use(\"seaborn-v0_8-colorblind\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "5c82cd35-e723-4095-8689-a19bb8aa4b8d",
   "metadata": {},
   "outputs": [],
   "source": [
    "frequencies = np.exp(\n",
    "    np.linspace(\n",
    "        np.log(1),\n",
    "        np.log(1000),\n",
    "        32 // 2,\n",
    "    )\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "024a2cda-4192-40d6-be27-212351872b73",
   "metadata": {},
   "outputs": [],
   "source": [
    "embedding_list = []\n",
    "for y in np.arange(0, 1, 0.01):\n",
    "    x = np.array([[[[y]]]])\n",
    "    angular_speeds = 2.0 * math.pi * frequencies\n",
    "    embeddings = np.concatenate(\n",
    "        [np.sin(angular_speeds * x), np.cos(angular_speeds * x)], axis=3\n",
    "    )\n",
    "    embedding_list.append(embeddings[0][0][0])\n",
    "embedding_array = np.transpose(embedding_list)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "a2ddf579-c8df-4116-81f2-0b82c0ecbb80",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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12HmzJnIycnBgAED/udzIyMjkZycDD8/P2RlZSE6OhrJycn/c5F3ufzZ7XYd778RHe+/Fx3vvxcd7yufZVnIyspCZGTk/3ysQwabffr0wdmzZzFu3DikpKSgefPmWL169QVFQ4yzszOioqIA/PejfX9/f52sfyM63n8vOt5/Lzrefy863le2//WJ5n84ZLAJAEOGDPlTfzYXERERkStXtVeji4iIiMiV65IebHp4eGD8+PHlqtXlyqXj/fei4/33ouP996LjLb/nZFXV3AkiIiIiIn9wSX+yKSIiIiKXNw02RURERMRhNNgUEREREYfRYFNEREREHOaSHmzOmjULtWvXhqenJ+Li4rBt27bq3iSpAomJiWjdujX8/PxQo0YN9OjRAwcOHCj3mPz8fCQkJCA4OBi+vr7o1asXUlNTq2mLpapMnjwZTk5OGDp0aFmmY33l+fXXX3H//fcjODgYXl5eaNasGXbs2FH2e8uyMG7cOERERMDLywvx8fE4dOhQNW6xXKySkhI899xziI2NhZeXF+rWrYsXXnih3HrZOt5yyQ42Fy9ejOHDh2P8+PH4/vvvcc0116BLly44c+ZMdW+a/EUbN25EQkICkpKSsHbtWhQVFeGWW25BTk5O2WOGDRuGFStWYMmSJdi4cSNOnTqFnj17VuNWy1+1fft2vPnmm7j66qvL5TrWV5b09HS0b98ebm5uWLVqFfbt24fp06cjMDCw7DFTp07Fq6++ijlz5mDr1q3w8fFBly5dkJ+fX41bLhdjypQpmD17Nl5//XX8/PPPmDJlCqZOnYrXXnut7DE63gLrEnXddddZCQkJZf9fUlJiRUZGWomJidW4VeIIZ86csQBYGzdutCzLsjIyMiw3NzdryZIlZY/5+eefLQDWli1bqmsz5S/Iysqy6tWrZ61du9a64YYbrKeeesqyLB3rK9GoUaOsDh06GH9fWlpqhYeHW9OmTSvLMjIyLA8PD+vDDz/8v9hEqUK33Xab9dBDD5XLevbsafXt29eyLB1v+c0l+clmYWEhdu7cifj4+LLM2dkZ8fHx2LJlSzVumThCZmYmACAoKAgAsHPnThQVFZU7/g0bNkRMTIyO/2UqISEBt912W7ljCuhYX4k+++wztGrVCr1790aNGjXQokULvP3222W/P3bsGFJSUsodc5vNhri4OB3zy1C7du2wfv16HDx4EADw448/YvPmzejWrRsAHW/5jcPWRv8rzp07h5KSEoSFhZXLw8LCsH///mraKnGE0tJSDB06FO3bt0fTpk0BACkpKXB3d0dAQEC5x4aFhSElJaUatlL+ikWLFuH777/H9u3bL/idjvWV5+jRo5g9ezaGDx+Of/7zn9i+fTuefPJJuLu7o1+/fmXHlfXvOuaXn9GjR8Nut6Nhw4ZwcXFBSUkJJk2ahL59+wKAjrcAuEQHm/L3kZCQgL1792Lz5s3VvSniAMnJyXjqqaewdu1aeHp6VvfmyP+B0tJStGrVCi+99BIAoEWLFti7dy/mzJmDfv36VfPWSVX76KOPsGDBAixcuBBNmjTBrl27MHToUERGRup4S5lL8s/oISEhcHFxuaAiNTU1FeHh4dW0VVLVhgwZgpUrV+Lrr79GVFRUWR4eHo7CwkJkZGSUe7yO/+Vn586dOHPmDK699lq4urrC1dUVGzduxKuvvgpXV1eEhYXpWF9hIiIi0Lhx43JZo0aNcOLECQAoO67q368MI0aMwOjRo3HPPfegWbNmeOCBBzBs2DAkJiYC0PGW31ySg013d3e0bNkS69evL8tKS0uxfv16tG3bthq3TKqCZVkYMmQIli1bhq+++gqxsbHlft+yZUu4ubmVO/4HDhzAiRMndPwvM507d8aePXuwa9eusp9WrVqhb9++Zf+tY31lad++/QVTmR08eBC1atUCAMTGxiI8PLzcMbfb7di6dauO+WUoNzcXzs7lhxIuLi4oLS0FoOMt/191VyiZLFq0yPLw8LDmzZtn7du3zxo0aJAVEBBgpaSkVPemyV80ePBgy2azWRs2bLBOnz5d9pObm1v2mMcee8yKiYmxvvrqK2vHjh1W27ZtrbZt21bjVktV+X01umXpWF9ptm3bZrm6ulqTJk2yDh06ZC1YsMDy9va2Pvjgg7LHTJ482QoICLCWL19u7d692+revbsVGxtr5eXlVeOWy8Xo16+fVbNmTWvlypXWsWPHrKVLl1ohISHWyJEjyx6j4y2X7GDTsizrtddes2JiYix3d3fruuuus5KSkqp7k6QKAKA/c+fOLXtMXl6e9fjjj1uBgYGWt7e3ddddd1mnT5+uvo2WKvPHwaaO9ZVnxYoVVtOmTS0PDw+rYcOG1ltvvVXu96WlpdZzzz1nhYWFWR4eHlbnzp2tAwcOVNPWyl9ht9utp556yoqJibE8PT2tOnXqWM8++6xVUFBQ9hgdb3GyrN9N8y8iIiIiUoUuye9sioiIiMiVQYNNEREREXEYDTZFRERExGE02BQRERERh9FgU0REREQcRoNNEREREXEYDTZFRERExGE02BQRERERh9FgU0REREQcRoNNEREREXEYDTZFRERExGE02BQRERERh/l/cXtyhmdsx/AAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 6))\n",
    "plt.imshow(\n",
    "    embedding_array, cmap=\"coolwarm\", interpolation=\"nearest\", origin=\"lower\"\n",
    ")\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f365b4b8-c7f5-411e-89da-66d9c72e2b2f",
   "metadata": {},
   "outputs": [],
   "source": [
    "def positionalencoding1d(d_model, length):\n",
    "    \"\"\"\n",
    "    :param d_model: dimension of the model\n",
    "    :param length: length of positions\n",
    "    :return: length*d_model position matrix\n",
    "    \"\"\"\n",
    "    if d_model % 2 != 0:\n",
    "        raise ValueError(\n",
    "            \"Cannot use sin/cos positional encoding with \"\n",
    "            \"odd dim (got dim={:d})\".format(d_model)\n",
    "        )\n",
    "    pe = np.zeros((length, d_model))\n",
    "    position = np.array(list([x] for x in np.arange(0, length)))\n",
    "    div_term = np.exp(\n",
    "        (np.arange(0, d_model, 2) * -(math.log(10000.0) / d_model))\n",
    "    )\n",
    "    pe[:, : d_model // 2] = np.sin(position * div_term)\n",
    "    pe[:, d_model // 2 :] = np.cos(position * div_term)\n",
    "\n",
    "    return pe"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "b5aca099-0cb3-4529-b404-11f67802d6b7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "out = np.transpose(positionalencoding1d(32, 100))\n",
    "plt.imshow(out, cmap=\"coolwarm\", interpolation=\"nearest\", origin=\"lower\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7c80326a-6b37-4003-a67e-74822704ef4f",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
